import { Page, PipelineStageError } from "corvos"; import { strapiLoader } from "$/deps/strapi.tsx"; import { releaseStrapiSchema } from "$/schemas/releases.ts"; import { SplitLayout } from "$/ui/base/SplitLayout.tsx"; import { ActionButton } from "$/ui/objects/ActionButton.tsx"; import { Body } from "$/ui/objects/Body.tsx"; import { Button } from "$/ui/objects/Button.tsx"; import { Card } from "$/ui/objects/Card.tsx"; import { CardBody } from "$/ui/objects/CardBody.tsx"; import { Heading } from "$/ui/objects/Heading.tsx"; import { Icon } from "$/ui/objects/Icon.tsx"; import site from "@/corvos.config.ts"; export const pages = site.$.pageGenerator(async function* () { for await (const item of strapiLoader.loadCollection("corvos-releases", releaseStrapiSchema, { "populate[0]": "files", "sort[0]": "date:desc", "sort[1]": "version:desc", })) { if (item instanceof PipelineStageError) { yield item; continue; } yield new Page(".strapi", item.notes ?? [], { ...item, title: `Corvos ${item.version}`, type: "release" as const, }); } }); export const template = site.$.template({ type: "release" }, async (page, pages) => { const feed = await pages.type(".rss").match({ type: "releases" }).one(); return ( Release notes {{ __html: page.content }} } header-end={
} level="quiet" pill title="RSS Feed" />
} >
{page.data.title}
); });